专利摘要:
The invention relates to a method of encrypting a flow of instructions of a program and a method of executing a stream of instructions thus encrypted. The instructions are translated into binary code before being encrypted by a stream cipher method. When the program contains a conditional or unconditional branch instruction, an initialization instruction of the pseudo-random sequence generator is inserted into the program by means of an initialization vector, said initialization vector being used to generate the pseudo-sequence. -reatory for encrypting and decrypting instructions at the branch address. Decryption and execution of instructions can be done on the fly without having to know the physical addresses thereof, even in the presence of a branch.
公开号:FR3047100A1
申请号:FR1650606
申请日:2016-01-26
公开日:2017-07-28
发明作者:Florian Pebay-Peyroula;Olivier Savry;Thomas Hiscock
申请人:Commissariat a lEnergie Atomique CEA;Commissariat a lEnergie Atomique et aux Energies Alternatives CEA;
IPC主号:
专利说明:

METHOD OF ENCRYPTING A FLOT OF INSTRUCTIONS AND EXECUTING AN INSTRUMENT FLOW SO CHANGED
DESCRIPTION
TECHNICAL FIELD The object of the present invention relates to the field of software encryption and the execution of encrypted software.
STATE OF THE PRIOR ART
The increasing security requirements, especially in virtualization contexts, lead to consider the encryption of a software before its execution by a real or virtual machine.
The encryption of instructions to be executed by a microcontroller can be achieved in different ways:
In a first type of implementation called "offline" the software is fully encrypted beforehand and transmitted to the microcontroller. The software is decrypted by the microcontroller or a dedicated processor before being stored, in clear, in a mass memory. The microcontroller then executes the executions of the software in clear, read in this memory.
In a second type of implementation called "boot", the software is stored in encrypted form in a mass memory, for example a flash memory. When booting, the microcontroller or a dedicated processor decrypts the software and stores it in clear in a RAM. The microcontroller then executes the plaintext instructions read from the RAM.
In a third type of implementation called "on the fly", the software is encrypted in blocks, each block being transmitted to the microcontroller. This decrypts the received block, on the fly, and stores it in a cache memory before executing it. However, this type of implementation can hardly be retained when a block contains a conditional jump instruction to an instruction belonging to the same block, due to the loss of the encryption context.
US-B-6345359 discloses a method of encrypting a flow of instructions by disposable mask. Encryption is done instruction by instruction, the mask being generated from an encryption key and the address at which the instruction is stored. The mask is sent to each new instruction.
Decryption is done, on the fly, statement by instruction from the encryption key and the address at which the instruction is stored. The fact that the encryption is instruction by instruction using the storage address allows the microcontroller to synchronize its key, including during a jump running the program.
However, this method of encrypting software and executing on the fly assumes that we know the physical address of each instruction, both during encryption and during decryption. In particular, it will not be possible to run the software if it has been copied to another memory location or simply if it has been loaded into a buffer. In other words, the software encryption must be repeated each time it is installed or copied. Nor will it be possible to execute the flow of instructions thus encrypted by a virtual machine.
The purpose of the present invention is therefore to provide a method of encrypting a flow of instructions that allows on-the-fly execution instruction by instruction, without it being necessary to know the physical addresses of these instructions. Another object of the present invention is to propose a method of executing an instruction stream encrypted by such an encryption method.
STATEMENT OF THE INVENTION
The present invention is defined by a method of encrypting a flow of instructions of a program by means of stream cipher using a pseudo-random sequence generator parameterized by a secret key (K) and initialized by a vector initialization method (IV), wherein: the instruction flow is translated by a compiler into a binary code, said binary code being summed bit by bit with the pseudo-random sequence, to provide a flow of encrypted instructions; when the program includes a connection instruction to a branch address, a corresponding initialization instruction is inserted into the program to initialize the pseudo-random generator with an initialization vector specific to the branch address, the instructions from of the branch address being encrypted by means of a pseudo-random sequence generated by the pseudo-random generator initialized by said specific initialization vector.
According to a first embodiment, the initialization instruction is inserted just before the branch instruction.
Advantageously, the initialization instruction is inserted in the clear in the stream of encrypted instructions.
Alternatively, the initialization instruction is encrypted with said pseudo-random sequence before being inserted.
According to a second embodiment, the initialization instruction is inserted in the clear at the branch address in the stream of encrypted instructions. The invention also relates to a method of executing an instruction flow of a program, encrypted by the above encryption method, in which: a pseudo-random sequence is generated by means of the pseudo-random sequence generator. random parameterized by said secret key and initialized by said initialization vector; summing the stream of bitwise encrypted instructions with the pseudo-random sequence, each encrypted instruction being decrypted and executed before proceeding to the next; each initialization instruction is detected in the stream of encrypted instructions and, when such an initialization instruction is detected, the initialisation vector which it contains is extracted and the pseudo-random sequence generator is initialized with the initialization vector extracted in the event of connection to the branch address.
An initialization instruction is detected, if necessary after decryption, by means of a specific prefix.
In the case where an initialization instruction is inserted before a branch instruction to a branch address, the initialization vector extracted from the initialization instruction when it is detected is stored in an intermediate register. the pseudo-random generator is initialized with the contents of said register when jumping to the branch address.
According to a first example of application, the program comprises at least one conditional branch instruction. According to a second example of application, the program comprises at least one unconditional connection instruction.
BRIEF DESCRIPTION OF THE DRAWINGS Other features and advantages of the invention will appear on reading a preferred embodiment of the invention, with reference to the appended figures among which:
Figs. IA and IB schematically represent the principle of a method of encryption and decryption by stream;
Fig. 2 represents an example of application of a flow encryption method of a sequence of instructions;
Fig. 3 shows an example of a sequence of instructions, including a conditional jump instruction and an unconditional jump instruction;
Fig. 4A represents the sequence of instructions of FIG. 3, encrypted by an encryption method according to a first embodiment of the invention;
Fig. 4B represents the instruction sequence of FIG. 3, encrypted by an encryption method according to a second embodiment of the invention;
Fig. 5 is a flowchart of the method of encrypting a flow of instructions according to the first embodiment of the invention;
Fig. 6 is a flow chart of the method of encrypting a flow of instructions according to the second embodiment of the invention;
Fig. 7 is a flow chart of the method of executing a stream of instructions encrypted by the encryption method of FIG. 5;
Fig. 8 is a flow chart of the method of executing a flow of instructions encrypted by the encryption method of FIG. 6.
DETAILED PRESENTATION OF PARTICULAR EMBODIMENTS
We will consider in the following a flood of instructions that can be executed by a processor (CPU or microcontroller). This flow of instructions is in the form of a binary file generated by means of a compiler from an assembly source program or higher. Each instruction is represented by a binary code that obeys an instruction format and has a fixed size. An instruction is generally defined by an operation to be performed (logical and arithmetic operation for example) and, if necessary, a source operand and a destination operand. Operands can be defined by internal registers or memory locations.
Normally, the instructions are executed sequentially by the processor, the instruction pointer providing the address of the next instruction to be executed being simply incremented by the size of the instruction. The instructions are read by the sequencer at the address provided by the instruction pointer and presented to the arithmetic logic unit (ALU) of the processor that interprets them.
However, in the presence of control instructions (conditional or unconditional jump, loop, etc.), the sequential execution rule is derogated, the address present in the instruction pointer then being modified by the instruction instruction. control.
A first idea underlying the invention is to use a stream cipher to encrypt the flow of instructions, the instructions being in the form of binary code.
It is recalled that a flow encryption is based on the principle of the Vernam code or disposable mask. Each bit is individually encrypted by bitwise addition (XOR operation) of the plaintext message with the mask in question. In practice, flow encryption methods use the generation of a pseudo-random sequence from a linear or non-linear combination of outputs of shift registers, looped back on themselves and / or between them. The generated pseudo-random sequence, also known as the keystream, is the disposable mask.
Most recent methods of stream ciphers use on the one hand a secret key, as in any symmetric cryptosystem, denoted K, and an initialization vector IV, taking a new value at each encryption session sometimes also called circumstantial or nonce value (number used once). Unlike the encryption key, the initialization vector is public. It is mainly used to randomize the key flow from one encryption session to another.
Fig. IA schematically represents the principle of a flow encryption method.
The bit stream in plaintext (constituted for example by the binary file of the program, that is to say the binary codes of the successive instructions of this program), is represented by M. A pseudo-random sequence generator, 110, receives the secret key, K and the initialization vector, IV and provides the pseudo-random sequence, R. This is added bitwise at 120 (XOR) to the bit stream clear. The stream thus encrypted is noted Encrypt (M) K w = M Θ R.
Similarly, FIG. IB represents the principle of decryption of an encrypted bit stream with the stream cipher method of FIG. IA.
The decryption uses a pseudo-random sequence generator 210, identical to that used for encryption, 110. The pseudo-random sequence generator 210 receives the same encryption key, K, and is initialized by the same initialization vector. IV. The encrypted bitstream is summed bitwise at 220 with the pseudo-random sequence R to restore the bitstream in clear.
An example of a stream cipher method is Trivium, a description of which can be found in the article by Y. Tian et al. entitled "On the design of Trivium", published in IACR Cryptology ePrint Archive, 2009. Other methods of stream ciphers can alternatively be used, such as Grain, Mickey or even the older RC4 algorithm.
Fig. 2 represents an example of flow encryption of a sequence of instructions.
The instructions in the form of binary code are noted here IV ..., IN and are of size S. The bit stream to be encrypted consists of the sequence M - IX, ..., IN. The sequence at the output of the pseudo-random generator is cut into successive words of size S, Rv, Rn, in other words the encrypted bitstream is none other than the series of encrypted instructions C, = / 2 ,. Θ /., / 1, .., / V. The successive words RX, .., RN are obtained during the same encryption session, that is to say for the same initialization vector.
During the decryption, symmetrically, the same pseudo-random sequence is generated from the key K and the initialization vector IV and cut into successive words RX, .., RN. These words are respectively summed, bit by bit, with the encrypted instructions CX,..., CN to give the instructions in the clear IX, ..., IN.
As indicated in the introductory part, during the course of a program, the instruction pointer can arrive on a control instruction, for example on an unconditional jump instruction (also known as an unconditional jump) or a conditional jump (also known as conditional connection). Such a situation is illustrated in the example of FIG. 3. The program includes a first block of instructions (represented for more readability in assembly), BB0 whose last instructions are BNE rvr3, @ BBX and JMP @ BB2. In other words, if the contents of registers rx and r3 are different, the instruction pointer jumps to the address @ BBX of a second block, BBX, and if not, jumps to the address BB2, of a third block BB2. . It will be understood that the BBX and BB2 blocks do not respect the continuity of the sequencing and can not therefore be deciphered as such.
The second idea underlying the invention is to insert during the encryption of the instruction flow, a specific instruction located just before the branch instruction or the branch address, having as argument an initialization vector and instructing the pseudo-random sequence generator to load the initialization vector in question.
It should be noted that iterative loops are considered as the repetition of a sequence of instructions with a conditional branch. They also fall under the encryption method according to the present invention.
Fig. 4A represents the sequence of instructions of FIG. 3, encrypted by an encryption method according to a first embodiment of the invention.
In this first embodiment, the specific initialization vector loading instruction is inserted just before the branch instruction.
The instructions encrypted by the flow encryption method are shown in gray. Just before the conditional branch instruction BNE rvr3, @ BBX has been inserted an initialization instruction / V, forBBX, this instruction indicating that the initialization vector IV {is to be loaded in the pseudo-random sequence generator for the decryption and the on-the-fly execution of the BBX block, if the conditions of the conditional connection are fulfilled. Similarly, an initialization instruction IV2 for BB2 was inserted just before the unconditional branch instruction, JMP @ BB2. The inserted instruction indicates that the initialization vector IV2 is to be loaded into the pseudo-random sequence generator for decryption and on-the-fly execution of the BB2 block.
The instructions IV for BBX and IV2 for BB2 can be encrypted as the remainder of the block BB0 (by means of the method of flow encryption, with the key K and the initialization vector IV0). Alternatively, the initialization instructions may be in the clear in the block as shown in FIG. 4A. In the first case, the initialization instruction must first be decrypted before resetting the pseudo-random sequence generator, in the second case the plaintext instruction includes a control prefix indicating that it should not be decrypted but directly used to control the pseudo-random generator.
Fig. 4B represents the instruction sequence of FIG. 3, encrypted by an encryption method according to a second embodiment of the invention.
In this second embodiment, an initialization instruction is at the head of each block of instructions, at the branch address. Thus, the instructions IV0 for BB0, IV1 forfifij and TV2 for BB2 are respectively placed at the top of the instruction blocks ΒΒΰ, ΒΒι, ΒΒ2. These initialization instructions remain clear in the encrypted bitstream: they preferably contain a control prefix indicating that they must not be decrypted but instead taken into account to initialize the pseudo-random sequence generator. Thus, when the instruction pointer arrives at the beginning of the block BB0, the pseudo-random generator is initialized with the initialization vector IV0, the instructions of the block are decrypted (using the pseudo-random sequence thus generated ) and executed on the fly by the CPU ALU. Similarly, when the instruction pointer arrives at the beginning of block BB1 (when conditions of conditional branching are met) or at the beginning of block BB2 (because of the unconditional jump instruction), the generator of pseudo-random sequence is (re) -initialized with the initialization vector IVrespectively IV2. This ensures that the pseudo-random sequence for decryption is the one used to encrypt the block.
Fig. 5 is a flow chart of the method of encrypting an instruction stream according to the first embodiment of the invention.
This encryption method is implemented by a compiler, able by definition to translate assembly instructions into machine language instructions (binary code). The compiler is particularly able to identify the jump instructions, conditional or not, in the assembler program, as well as the branch addresses. The branch addresses are stored in a table T @ and each branch address is associated in the table with a specific initialization vector value. Branch addresses are relative addresses (instruction numbers) and not physical addresses. The initialization vector values can be the result of a random draw or the output of a counter, incremented at each new branch address.
The assembly instruction flow is provided, instruction by instruction, to the stream cipher method. This is initialized at 510 by means of an encryption key K and a value IV0 of the initialization vector of the pseudo-random sequence generator. In step 520, a new instruction is taken into account. It is determined in 530 from the table T @ whether the address of the current instruction is a branch address or not.
If this is the case, the pseudo-random sequence generator is loaded at 540 with the initialization vector value corresponding to this address. Otherwise, continue in 570 without changing the initialization vector. In step 550, it is determined whether the current instruction is a branch instruction (conditional or not).
If it is not a branch instruction, go directly to step 565.
On the other hand, if the current instruction is a branch instruction, the value of the initialization vector corresponding to the branch address is searched in the T @ table in 560. We denote lVi this value. Then, an initialization instruction of the pseudo-random sequence generator is inserted at the value / V, before the current instruction.
In a first variant where the initialization instruction is left in clear, we go directly to step 570. Otherwise, in a second variant represented here, the initialization instruction is encrypted by 565 with the encryption by flow. based on the current value of the initialization vector. At step 570, the current instruction is encrypted with the stream cipher algorithm. To do this, the instruction is first translated into binary code by the compiler and then the binary code is encrypted by the pseudo-random sequence based on the current value of the initialization vector. At step 580, it is determined whether the end of the program has been reached. If not, return to 520 to process the new current instruction. If yes, the instruction flow encryption method ends in 590.
Fig. 6 shows a flowchart of the method of encrypting a flow of instructions according to the second embodiment of the invention.
As in the first embodiment, the encryption method is implemented by a compiler. This one knows the connection addresses of the different blocks of the program. These branch addresses are listed in a T @ table. It is assumed that a corresponding initialization vector has been generated for each branch address and that this initialization vector is stored in the table in relation to the corresponding branch address.
The assembly instruction flow is provided, instruction by instruction, to the stream cipher method. In step 610, the pseudo-random sequence generator is initialized by means of the encryption key K and the value IV0 of the initialization vector associated with the first block. In step 620, a new instruction is taken into account.
It is determined in 630, from the table T @, whether the address of the current instruction is a branch address or not.
If it is not a branch address, go directly to step 670.
On the other hand, if the current instruction is a branch address, the initialization value / ν 'corresponding to this branch address is searched in 640 in the table T @.
In 650, an initialization instruction of the pseudo-random sequence generator at the value TVi is inserted in clear at the branch address.
In 660, the initialization vector of the pseudo-random sequence generator is updated with the new value lVi. At step 670, the current instruction is encrypted with the stream cipher algorithm. To do this, the instruction is translated into binary code by the compiler and then the binary code is encrypted by the pseudo-random sequence of the stream cipher algorithm. In step 680, it is determined whether the end of the program has been reached. If not, return to 620 to process the new current instruction. If yes, the instruction flow encryption method ends in 690.
Fig. 7 is a flow chart of the method of executing a stream of instructions encrypted by the encryption method of FIG. 5.
In 710, the pseudo-random sequence generator is initialized by means of the secret key K used for encryption and the initial initialization vector IV0.
In 720, one looks (FETCH operation) a new instruction in the memory.
In 730, the instruction is deciphered by means of the pseudo-random sequence and it is determined at 740 whether the instruction thus deciphered is an initialization instruction of the pseudo-random sequence generator. If so, the new value of the initialization vector is extracted and stored in a register, at 745, and then back to step 720. If no, then 750 is continued.
Alternatively, it is determined whether the instruction is in the clear (case of the first variant) and, in this case, the new value of the initialisation vector is extracted directly, it is stored in the register in question before returning to the step 720.
In 750, ALU executes the previously decrypted instruction. We check at 760 whether the instruction is an unconditional branch instruction or a conditional branch instruction whose condition is satisfied. If this is the case, the value of the register is loaded at 770 as the new initialization vector of the pseudo-random sequence generator. Otherwise, continue in 780.
In 780, we check if we have reached an end instruction. If yes, the execution stops in 790. Otherwise, the execution continues with the search for a new statement in 720.
Fig. 8 is a flow chart of the method of executing a flow of instructions encrypted by the encryption method of FIG. 6.
In 810, the pseudo-random sequence generator is initialized by means of the secret key K used for encryption and the initial initialization vector IV0.
In 820, a search (FETCH operation) is searched for a new instruction in the memory. In step 830, it is determined whether the instruction is an initialization (clear) instruction of the pseudo-random sequence generator.
If so, at 835, the new value of the initialization vector is extracted and loaded into the pseudo-random sequence generator. Then proceed to step 860.
If not, the current instruction is deciphered in 840 by means of the pseudo-random sequence. The ALU executes at 850 the previously decrypted instruction.
In 860, we check if we have reached an end instruction. If so, the execution stops in 870. If not, the execution continues with the search for a new instruction in 820. Those skilled in the art will understand that, whatever the embodiment envisaged, a conditional or unconditional branching is associated with a value of the initialization vector when encrypting the instruction stream. This value is used to initialize the pseudo-random sequence generator for the instruction block encryption corresponding to the branch address. When executing the instruction flow, the initialization vector corresponding to this block is used for its decryption. Thus, it is not necessary to refer to a physical address when encrypting or decrypting a program instruction.
权利要求:
Claims (10)
[1" id="c-fr-0001]
A method of encrypting an instruction stream of a program using stream cipher using a pseudo-random sequence generator set by a secret key (K) and initialized by an initialization vector (TV) ), characterized in that: the flow of instructions is translated by a compiler into a binary code, said binary code being summed bit by bit with the pseudo-random sequence, to provide a flow of encrypted instructions; when the program includes a connection instruction to a branch address, a corresponding initialization instruction is inserted into the program to initialize the pseudo-random generator with an initialization vector specific to the branch address, the instructions from of the branch address being encrypted by means of a pseudo-random sequence generated by the pseudo-random generator initialized by said specific initialization vector.
[2" id="c-fr-0002]
Method of encrypting an instruction stream according to claim 1, characterized in that the initialization instruction is inserted just before the branch instruction.
[3" id="c-fr-0003]
Method for encrypting an instruction stream according to claim 2, characterized in that the initialization instruction is inserted in the plaintext in the stream of encrypted instructions.
[4" id="c-fr-0004]
4. A method of encrypting an instruction stream according to claim 2, characterized in that the initialization instruction is encrypted with said pseudo-random sequence before being inserted.
[5" id="c-fr-0005]
The method of encrypting an instruction stream according to claim 1, characterized in that the initialization instruction is inserted in the clear at the branch address in the stream of encrypted instructions.
[6" id="c-fr-0006]
6. A method of executing a flow of instructions of a program, encrypted by the encryption method according to claim 1, characterized in that: a pseudo-random sequence is generated by means of the pseudo-random sequence generator parameterized by said secret key and initialized by said initialization vector; summing the stream of bitwise encrypted instructions with the pseudo-random sequence, each encrypted instruction being decrypted and executed before proceeding to the next; each initialization instruction is detected in the stream of encrypted instructions and, when such an initialization instruction is detected, the initialisation vector which it contains is extracted and the pseudo-random sequence generator is initialized with the initialization vector extracted in the event of connection to the branch address.
[7" id="c-fr-0007]
7. A method of executing an instruction stream according to claim 6, characterized in that an initialization instruction is detected, where appropriate after decryption, by means of a specific prefix.
[8" id="c-fr-0008]
Method for executing an instruction flow according to claim 6, characterized in that, in the case where an initialization instruction is inserted before a branch instruction at a branch address, it is stored in a register intermediate the initialization vector extracted from the initialization instruction when it is detected and the pseudo-random generator is initialized with the contents of said register when jumping to the branch address.
[9" id="c-fr-0009]
9. Method of executing an instruction flow according to claim 6 to 8, characterized in that the program comprises at least one conditional branch instruction.
[10" id="c-fr-0010]
10. A method of executing an instruction flow according to claim 6 to 8, characterized in that the program comprises at least one unconditional branch instruction.
类似技术:
公开号 | 公开日 | 专利标题
EP3200386B1|2019-10-09|Method of encrypting a stream of instructions and executing a stream of instructions thusly encrypted
US9336160B2|2016-05-10|Low latency block cipher
Schwabe et al.2016|All the AES you need on Cortex-M3 and M4
JP5167348B2|2013-03-21|Software encryption method, software decryption method, software encryption device, and software decryption device
US20120144208A1|2012-06-07|Indexed table based code encrypting/decrypting device and method thereof
US8879731B2|2014-11-04|Binding of protected video content to video player with block cipher hash
JP5184489B2|2013-04-17|Method and apparatus for instruction level software encryption
CN107273723B|2022-01-28|So file shell adding-based Android platform application software protection method
US20130142331A1|2013-06-06|Binding of protected video content to video player with encryption key
Rahimian et al.2013|On the reverse engineering of the citadel botnet
EP3211823B1|2018-01-03|Method for confidential execution of a program operating on data encrypted by means of homomorphic encryption
Nishikawa et al.2017|Implementation of bitsliced AES encryption on CUDA-enabled GPU
FR3071121A1|2019-03-15|METHOD FOR EXECUTING A BINARY CODE OF A FUNCTION SECURE BY A MICROPROCESSOR
WO2015035827A1|2015-03-19|Method and apparatus for providing string encryption and decryption in program files
EP3555743B1|2021-01-06|Method for executing a polymorphic machine code of a predetermined function by a microprocessor
Seo et al.2017|Lightweight fault attack resistance in software using intra-instruction redundancy, revisited
EP3300293A1|2018-03-28|Method for symmetric encryption or decryption by blocks
FR3071082A1|2019-03-15|METHOD FOR EXECUTING A BINARY CODE OF A FUNCTION SECURE BY A MICROPROCESSOR
FR3071122A1|2019-03-15|METHOD FOR EXECUTING A BINARY CODE OF A FUNCTION SECURE BY A MICROPROCESSOR
Damjanović et al.2016|Tweakable parallel OFB mode of operation with delayed thread synchronization
Guillen et al.2016|Practical evaluation of code injection in encrypted firmware updates
EP3832947B1|2022-01-26|Method for executing a computer program by an electronic apparatus
US20210367766A1|2021-11-25|A computation device using shared shares
WO2015192206A1|2015-12-23|Methods for securing an application and data
FR3096851A1|2020-12-04|METHODS OF IMPLEMENTATION AND OBFUSCATION OF A CRYPTOGRAPHIC ALGORITHM WITH A GIVEN SECRET KEY
同族专利:
公开号 | 公开日
FR3047100B1|2018-03-02|
EP3200386A1|2017-08-02|
US10305682B2|2019-05-28|
US20170214523A1|2017-07-27|
EP3200386B1|2019-10-09|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
US4562305A|1982-12-22|1985-12-31|International Business Machines Corporation|Software cryptographic apparatus and method|
US20100153745A1|2008-12-15|2010-06-17|Onno Stephane|Methods and devices for instruction level software encryption|
FR1359473A|1963-05-02|1964-04-24|United Shoe Machinery Ab|Manufacturing process of polyethylene objects|
US5438622A|1994-01-21|1995-08-01|Apple Computer, Inc.|Method and apparatus for improving the security of an electronic codebook encryption scheme utilizing an offset in the pseudorandom sequence|
US6345359B1|1997-11-14|2002-02-05|Raytheon Company|In-line decryption for protecting embedded software|DE102015201430A1|2015-01-28|2016-07-28|Ihp Gmbh - Innovations For High Performance Microelectronics / Leibniz-Institut Für Innovative Mikroelektronik|Intrinsic authentication of program code|
FR3060789A1|2016-12-19|2018-06-22|Commissariat A L'energie Atomique Et Aux Energies Alternatives|METHOD FOR EXECUTING A MICROPROCESSOR OF A POLYMORPHIC MACHINE CODE OF A PREDETERMINED FUNCTION|
FR3071121B1|2017-09-14|2020-09-18|Commissariat Energie Atomique|PROCESS FOR EXECUTION OF A BINARY CODE OF A FUNCTION SECURE BY A MICROPROCESSOR|
FR3071122B1|2017-09-14|2019-09-13|Commissariat A L'energie Atomique Et Aux Energies Alternatives|METHOD FOR EXECUTING A BINARY CODE OF A FUNCTION SECURE BY A MICROPROCESSOR|
FR3094107B1|2019-03-21|2021-02-26|Commissariat Energie Atomique|PROCESS FOR EXECUTING A BINARY CODE OF A SECURE FUNCTION BY A MICROPROCESSOR|
法律状态:
2017-01-31| PLFP| Fee payment|Year of fee payment: 2 |
2017-07-28| PLSC| Publication of the preliminary search report|Effective date: 20170728 |
2018-01-31| PLFP| Fee payment|Year of fee payment: 3 |
2020-01-30| PLFP| Fee payment|Year of fee payment: 5 |
2021-10-08| ST| Notification of lapse|Effective date: 20210905 |
优先权:
申请号 | 申请日 | 专利标题
FR1650606|2016-01-26|
FR1650606A|FR3047100B1|2016-01-26|2016-01-26|METHOD OF ENCRYPTING A FLOT OF INSTRUCTIONS AND EXECUTING A FLOAT OF INSTRUCTIONS SO DIGIT.|FR1650606A| FR3047100B1|2016-01-26|2016-01-26|METHOD OF ENCRYPTING A FLOT OF INSTRUCTIONS AND EXECUTING A FLOAT OF INSTRUCTIONS SO DIGIT.|
EP17152324.4A| EP3200386B1|2016-01-26|2017-01-20|Method of encrypting a stream of instructions and executing a stream of instructions thusly encrypted|
US15/412,252| US10305682B2|2016-01-26|2017-01-23|Encryption method for an instructions stream and execution of an instructions stream thus encrypted|
[返回顶部]